package com.elitel.frame.base.service.strategy.sql;

import com.elitel.frame.main.entity.BaseQueryfield;
import com.elitel.frame.main.entity.enums.ParseSQLEnum;
import com.elitel.frame.main.entity.ext.DBServer;

import javax.annotation.PostConstruct;
import java.util.List;

/**
 * SQL解析策略类
 *
 * @author xqh
 * @since 2024-9-13 16:53:10
 */
public abstract class ParseSQLStrategy {

    /**
     * 获取策略
     *
     * @return 策略枚举
     */
    protected abstract ParseSQLEnum getTypeEnum();

    /**
     * 初始化策略类型
     */
    @PostConstruct
    private void init() {
        ParseSQLFactory.register(getTypeEnum().getType(), this);
    }

    /**
     * 根据sql解析查询字段
     *
     * @param server
     * @return 查询字段列表
     */
    public abstract List<BaseQueryfield> parseSQLQueryField(DBServer server);

}
